#ifndef __M_UTIL_H__
#define __M_UTIL_H__

//1.获取系统时间
//2.判断文件是否存在
//3.获取文件路径
//4.创建目录（指定文件的父级目录）


#include<iostream>
#include<ctime>
#include<sys/stat.h>

namespace log
{
    namespace util
    {
        class Date
        {
            public:
            static size_t now()
            {
                return (size_t)time(nullptr);
            }
        };
        class File
        {
            public:
            static bool exists(const std::string &pathname)
            {
                struct stat st;
                if(stat(pathname.c_str(),&st)<0)
                {
                    return false;
                }
                return true;
            }
            static std::string path(const std::string &pathname)
            {
                size_t pos=pathname.find_last_of("/\\");
                if(pos==std::string::npos)
                {
                    return ".";
                }
                return pathname.substr(0,pos+1);
            }
            static void createDirectory(const std::string &pathname)
            {
                size_t pos=0,idx=0;
                /*pos：记录路径中分隔符（/ 或 \ ）的位置，用于分割路径片段。
idx：遍历路径的索引，标记当前处理的起始位置。*/
                while(idx<pathname.size())
                {
                    pos=pathname.find_first_of("/\\",idx);
                    if(pos==std::string::npos)
                    {
                        mkdir(pathname.c_str(),0777);
                    }
                    std::string parent_dir=pathname.substr(0,pos+1);//不是pos-idx+1
                    if(exists(parent_dir)==true)
                    {
                        idx=pos+1;
                        continue;
                    }
                    mkdir(parent_dir.c_str(),0777);
                    idx=pos+1;
                }
            }
        };
    }
}
#endif